/**
 * 获取位置
 */
import Taro from '@tarojs/taro';
import Config from '../../config/index';

declare var AMap;
export default function Position() {
  return new Promise((resolve, reject) => {
    if (process.env.TARO_ENV === 'weapp') {
      // 小程序
      Taro.getLocation({
        isHighAccuracy: true,
      })
        .then(res => {
          if (res && res.errMsg === 'getLocation:ok') {
            const { longitude, latitude } = res;
            formatPosition(longitude, latitude, res => {
              if (res && res.data.status === '1') {
                const data = res.data.regeocode.addressComponent.adcode;
                resolve({ city: data });
              }
            });
          }
        })
        .catch(err => {
          reject(err);
        });
    } else if (process.env.TARO_ENV === 'h5') {
      // h5
      setTimeout(() => {
        AMap.plugin('AMap.CitySearch', function() {
          var citySearch = new AMap.CitySearch();
          citySearch.getLocalCity(function(status, result) {
            console.log(status);

            if (status === 'complete' && result.info === 'OK') {
              // 查询成功，result即为当前所在城市信息
              resolve(result);
            } else {
              reject(result);
            }
          });
        });
      }, 150);

      // 浏览器定位
      // AMap.plugin('AMap.Geolocation', function() {
      //   var geolocation = new AMap.Geolocation({
      //     // 是否使用高精度定位，默认：true
      //     enableHighAccuracy: false,
      //     // 设置定位超时时间，默认：无穷大
      //     // timeout: 10000,
      //     // 定位按钮的停靠位置的偏移量，默认：Pixel(10, 20)
      //     // buttonOffset: new AMap.Pixel(10, 20),
      //     //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
      //     // zoomToAccuracy: true,
      //     //  定位按钮的排放位置,  RB表示右下
      //     // buttonPosition: 'RB',
      //   });

      //   geolocation.getCurrentPosition();
      //   AMap.event.addListener(geolocation, 'complete', onComplete);
      //   AMap.event.addListener(geolocation, 'error', onError);

      //   function onComplete(data) {
      //     // data是具体的定位信息
      //     resolve(data);
      //   }

      //   function onError(data) {
      //     // 定位出错
      //     reject(data);
      //   }
      // });
    }
  });
}

/**
 * 根据经纬度转换地区
 * @param longitude 经度
 * @param latitude 纬度
 */
function formatPosition(longitude: number, latitude: number, call: Function) {
  Taro.request({
    url: `${Config.gdUrl}v3/geocode/regeo?key=f1c8dd3e18092edf594550cc8c26e621&location=${longitude},${latitude}`,
    method: 'GET',
    success: res => {
      console.log(res);
      call(res);
    },
    fail: err => {
      console.log(err);
      call(err);
    },
  });
}
